package principal;

import datos.Conectate;

public class JFPrincipal extends javax.swing.JFrame {

    static Conectate con = new Conectate(); //Clase que nos conecta con la base de datos
    static String personal = ""; //string que almacena el id del usuario del programa
    
    //Cada InternalFrame del programa, de este modo se controla que se abra cada ventana una sola vez y
    //que se cierren todas cuando se cierra la sesion del usuario
    static JIFUsuarios usuarios = null;
    static JIFRegistroPasajeros pasajeros = null;
    static JIFPagoMensualidad pago = null;
    static JIFNoPago nopago = null;
    static JIFItinerarioBus itinerario = null;
    static jDLogin login = null;
    
    public JFPrincipal() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jMenuBar1 = new javax.swing.JMenuBar();
        jMPersonal = new javax.swing.JMenu();
        jMIAdministracion = new javax.swing.JMenuItem();
        jMICerrarSesion = new javax.swing.JMenuItem();
        jMISalir = new javax.swing.JMenuItem();
        jMPasajeros = new javax.swing.JMenu();
        jMIAgregarPasajero = new javax.swing.JMenuItem();
        jMMensualidad = new javax.swing.JMenu();
        jMIPago = new javax.swing.JMenuItem();
        jMIVerNoPago = new javax.swing.JMenuItem();
        jMBuses = new javax.swing.JMenu();
        jMIItinerarios = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });

        jMPersonal.setText("Personal");

        jMIAdministracion.setText("Administracion");
        jMIAdministracion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIAdministracionActionPerformed(evt);
            }
        });
        jMPersonal.add(jMIAdministracion);

        jMICerrarSesion.setText("Cerrar Sesión");
        jMICerrarSesion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMICerrarSesionActionPerformed(evt);
            }
        });
        jMPersonal.add(jMICerrarSesion);

        jMISalir.setText("Salir");
        jMISalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMISalirActionPerformed(evt);
            }
        });
        jMPersonal.add(jMISalir);

        jMenuBar1.add(jMPersonal);

        jMPasajeros.setText("Pasajeros");

        jMIAgregarPasajero.setText("Ingresar pasajero");
        jMIAgregarPasajero.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIAgregarPasajeroActionPerformed(evt);
            }
        });
        jMPasajeros.add(jMIAgregarPasajero);

        jMMensualidad.setText("Mensualidad");

        jMIPago.setText("Pago mensualidad");
        jMIPago.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIPagoActionPerformed(evt);
            }
        });
        jMMensualidad.add(jMIPago);

        jMIVerNoPago.setText("Ver impagas");
        jMIVerNoPago.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIVerNoPagoActionPerformed(evt);
            }
        });
        jMMensualidad.add(jMIVerNoPago);

        jMPasajeros.add(jMMensualidad);

        jMenuBar1.add(jMPasajeros);

        jMBuses.setText("Buses");

        jMIItinerarios.setText("Itinerarios");
        jMIItinerarios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIItinerariosActionPerformed(evt);
            }
        });
        jMBuses.add(jMIItinerarios);

        jMenuBar1.add(jMBuses);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 757, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 558, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMIAdministracionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIAdministracionActionPerformed
        //Ventada de Administracion de usuarios
       if (usuarios != null) //si ya existe una ventana de este tipo, se sale del metodo
            return;
        usuarios = new JIFUsuarios();
        this.add(usuarios);
        usuarios.show();
    }//GEN-LAST:event_jMIAdministracionActionPerformed

    private void jMIAgregarPasajeroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIAgregarPasajeroActionPerformed
        //Ventana de Ingreso de Pasajeros
        if (pasajeros != null) //si ya existe una ventana de este tipo, se sale del metodo
            return;
        pasajeros = new JIFRegistroPasajeros();
        this.add(pasajeros);
        pasajeros.show();
    }//GEN-LAST:event_jMIAgregarPasajeroActionPerformed

    private void jMIPagoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIPagoActionPerformed
        //Ventana de Pago de Mensualidad
        if (pago != null) //si ya existe una ventana de este tipo, se sale del metodo
            return;
        pago = new JIFPagoMensualidad();
        this.add(pago);
        pago.show();
    }//GEN-LAST:event_jMIPagoActionPerformed

    private void jMIVerNoPagoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIVerNoPagoActionPerformed
        //Ventana de Informe de pasajeros que no han pagado alguna mensualidad
        if (nopago != null) //si ya existe una ventana de este tipo, se sale del metodo
            return;
        nopago = new JIFNoPago();
        this.add(nopago);
        nopago.show();
    }//GEN-LAST:event_jMIVerNoPagoActionPerformed

    private void jMIItinerariosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIItinerariosActionPerformed
        //Ventana de Informe de Itinerario de bus
        if (itinerario != null) //si ya existe una ventana de este tipo, se sale del metodo
            return;
        itinerario = new JIFItinerarioBus();
        this.add(itinerario);
        itinerario.show();
    }//GEN-LAST:event_jMIItinerariosActionPerformed

    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        //Al iniciar la ventana, muestra la ventana de inicio de sesion
        this.MostarLogin();
    }//GEN-LAST:event_formComponentShown

    private void jMICerrarSesionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMICerrarSesionActionPerformed
        //Cuando se cierra sesion, se cierran todas las subventanas abiertas
        if (usuarios != null)
        {
            usuarios.dispose();
            usuarios = null;
        }
        if (pasajeros != null)
        {
            pasajeros.dispose();
            pasajeros = null;
        }
        if (pago != null)
        {
            pago.dispose();
            pago = null;
        }
        if (nopago != null)
        {
            nopago.dispose();
            nopago = null;
        }
        if (itinerario != null)
        {
            itinerario.dispose();
            itinerario = null;
        }
        //Luego, se muestra de nuevo la ventana de inicio de sesion
        this.MostarLogin();
    }//GEN-LAST:event_jMICerrarSesionActionPerformed

    private void jMISalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMISalirActionPerformed
        //Salida del programa
        System.exit(0);
    }//GEN-LAST:event_jMISalirActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(JFPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(JFPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(JFPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(JFPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFPrincipal().setVisible(true);
            }
        });
    }
    
    private void MostarLogin() //Metodo para mostrar la ventana de inicio de sesion
    {
        login = new jDLogin(this, true);
        //Se posiciona la ventana en el centro de la ventana
        login.setLocation(this.getX() + (this.getWidth() - login.getWidth()) / 2, this.getY() + (this.getHeight() - login.getHeight()) / 2);
        login.setVisible(true);
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenu jMBuses;
    private javax.swing.JMenuItem jMIAdministracion;
    private javax.swing.JMenuItem jMIAgregarPasajero;
    private javax.swing.JMenuItem jMICerrarSesion;
    private javax.swing.JMenuItem jMIItinerarios;
    private javax.swing.JMenuItem jMIPago;
    private javax.swing.JMenuItem jMISalir;
    private javax.swing.JMenuItem jMIVerNoPago;
    private javax.swing.JMenu jMMensualidad;
    private javax.swing.JMenu jMPasajeros;
    private javax.swing.JMenu jMPersonal;
    private javax.swing.JMenuBar jMenuBar1;
    // End of variables declaration//GEN-END:variables
}
